import { SetMetadata } from '@nestjs/common';

/**
 * 角色装饰器 - 用于指定接口所需的角色权限
 */
export const ROLES_KEY = 'roles';
export const Roles = (...roles: string[]) => SetMetadata(ROLES_KEY, roles);

/**
 * 跳过认证装饰器 - 用于标记不需要身份验证的接口
 * 使用场景：
 * - 登录接口
 * - 注册接口
 * - 公开文件接口
 * - 健康检查接口
 */
export const SKIP_AUTH_KEY = 'skipAuth';
export const SkipAuth = () => SetMetadata(SKIP_AUTH_KEY, true);

/**
 * 公开接口装饰器 - 用于标记完全公开的接口（不需要任何认证）
 * 这是 SkipAuth 的别名，提供更语义化的命名
 */
export const Public = () => SetMetadata(SKIP_AUTH_KEY, true);

/**
 * 管理员权限装饰器 - 用于标记需要管理员权限的接口
 */
export const AdminOnly = () => SetMetadata(ROLES_KEY, ['admin']);

/**
 * 用户权限装饰器 - 用于标记需要用户权限的接口
 */
export const UserOnly = () => SetMetadata(ROLES_KEY, ['user']); 